#ifndef _VALIDATOROBJ_H_
#define _VALIDATOROBJ_H_
#include "ValidatorBase.h"
#include "MgrBase.h"

class VObj_AliveState:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(bool bAlive){m_bBeAliveOrDead=bAlive;}
private:
	bool m_bBeAliveOrDead;
};
class VObj_StorageIn:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(const std::vector<int32>& vStorageIn){m_vStorageIn=vStorageIn;}
private:
	std::vector<int32> m_vStorageIn;
};

class VObj_SkillCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(const std::vector<int32>& vSkills){m_vSkillTypes=vSkills;}
	void SetInclude(bool bInclude){m_bIncludeOrExclude=bInclude;}
private:
	bool m_bIncludeOrExclude;
	std::vector<int32> m_vSkillTypes;
};
class VObj_SkillCatgegoryCheck:public ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(const std::vector<int32>& vSkillCategorys){m_vSkillCatgegorys=vSkillCategorys;}
private:
	bool m_bIncludeOrExclude;
	std::vector<int32> m_vSkillCatgegorys;
};

class VObj_RaceCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(const std::vector<int32>& vRaces){m_vRaces=vRaces;}
	void SetInclude(bool bInclude){m_bIncludeOrExclude=bInclude;}
private:
	bool m_bIncludeOrExclude;
	std::vector<int32> m_vRaces;
};


class VObj_FightTurnEqual:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(int32 iTurnNum){ m_iTurnNum=iTurnNum;}
private:
	int32 m_iTurnNum;
};
class VObj_ObjTypeCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(const std::vector<int32>& vTypes){m_vTypes=vTypes;}
	void SetInclude(bool bInclude){m_bIncludeOrExclude=bInclude;}
private:
	bool m_bIncludeOrExclude;
	std::vector<int32> m_vTypes;
};

class VObj_HpFullCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(bool bHpFullOrNot){m_bHpFullOrNot=bHpFullOrNot;}
private:
	bool m_bHpFullOrNot;
	
};

class VObj_FacedObjCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(int32 iEacheValidator);
private:
	int32 m_iEacheValidator;
	TEachValidators* m_pEachValidator;
};


class VObj_HpCheck:public  ValidatorObjBase
{
public:
	virtual bool Validate(CombatObj * pObj) const ;
	virtual void InitData(ECompare eCompare,int32 iValue,float fPercent)
	{
		m_eCompare=eCompare;
		m_iValue=iValue;
		m_fPercent=fPercent;
	};
private:
	ECompare m_eCompare;
	int32 m_iValue;
	float m_fPercent;
};
#endif